文刀漢三

如何快速对比两份文档的差异?| 工作日志

你也许遇到过这样的情景:写了一份 Word 报告发给领导,领导看完之后将报告返回给你,并且嘱咐说:「里面有几个地方需要修改,我都标注在里面了。」

你花了九牛二虎之力,逐字逐句对比两份文档,终于在第五段第三行、第七段第六行、和倒数第二段第八行找到了领导的批注。文档改好的同时,也练成了火眼金睛。

虽说现在已经有石墨文档、Quip、Google Docs 这些更好用的在线文档编辑工具,但有时候我们发送文件的初衷并不是协同编辑,而是一个人主写,另一个人审核批改。

在我自己的工作流程里,也经常会碰见类似的情景:作者将写完的文章初稿以 Markdown 格式发给我,我用 Markdown 编辑器打开,一边审稿一边标注修改意见。有时候碰见文章里语句不太通顺的,也会顺手修改掉1

如果这次不改的话,下次可能会忘。
 。最后将审过的文稿,返回给作者修改2
作者习惯在本地用自己顺手的编辑器写稿;对于我来说,Markdown 格式也更方便排版到网站上。
 

当然我们都会比较贴心地用方头实心括号 【】 将修改意见括起来,并告知作者直接搜索这个符号就行。但像后者这种直接在原文里修改的内容,就比较难告知具体哪里动过了,只能笼统地说「文章里语句不太通顺的地方我直接帮你改掉了」、「我删掉了一些『啦、啊』这样的语气词」。

我们提修改意见的方式

所以,有没有一种更便捷的方法,能快速比对出两份文档的差异呢?

用 BBEdit 来对比文档

我们在 奏折 07 里推荐过一款 macOS 上的文本编辑器 BBEdit,就能用于对比文档。

BBEdit

BBEdit 本身是免费的,解锁内购后可以获得完整的 HTML 配套工具以及 Text Factories 等进阶功能。但一般用户不需要购买,免费版就足够使用,对比文档功能就被包含在免费版里。

我们只需在 BBEdit 的菜单栏里选择「Search - Find Differencs…」,就会弹出对比文档的设置窗口。选择需要对比的文档,或者直接将文档拖拽进窗口内,就能开始对比。

对比文档的设置窗口

不过先不要着急,我们来看一看下方的设置选项:

  • Case sensitive:大小写敏感。如果关闭,则大写字母(比如 A)和小写字母(比如 a)会被识别为同一个字符。
  • Ignore curly quotes (“ ” ‘ ’):忽视直引号 " " ' ' 和弯引号 “ ” ‘ ’ 的区别。
  • Ignore blank lines:忽视增删的空白行。
  • Ignore spaces:忽视空格的区别。

「Folder Comparison」则是对比两个文件夹时用到的选项,一般较少用到。

调好偏好设置之后,我们就开始对比。BBEdit 的对比方式是,只要文字有变动,整段都会被高亮。

有变动的文字会高亮显示

底下一栏则是单独列出所有变动的段落。选择其中一项,文档就会自动滚动到该段落的位置,并且显示出更详细的变动细节。比如下面这一段,你可以看出新增的列表符号和补充图片的文字,都被标注为更深的颜色,一眼就能和没有变动的文字区分开来。

BBEdit 会将具体变动的文字标注为更深的颜色

无论是增、删、移动等修改,BBEdit 都能识别出来。我们可以对着右边的修改意见,随时在左边这份原文档上进行编辑。也可以通过界面上的「Apply」按钮,将一份文档的变动直接应用到另一份文档上。

除了 Markdown 文档,HTML、CSS、JSON 等格式的纯文本文件,BBEdit 都能对比。

对比文章也是学习的过程

用 BBEdit 对比文章,除了快速找出文章的差异,其实还有另一个目的,那就是学习别人写文章的方式。

比如最近 Power+ 里 PhilGu 写的《Drafts for Mac 测评:草稿处理的无缝衔接》这篇文章,责编是 Hum。在 Hum 和 PhilGu 改稿的过程中,我让他们把初稿和 Hum 标注过的版本也发我一份,因为我看过这篇文章之后,并没有很好的修改思路,所以想学习一下 Hum 会怎么改这篇文章。

Drafts 的初稿(左)和 Hum 的批注(右)

上面这张图,左边是 PhilGu 写的初稿,右边是 Hum 标注过的版本。这份标注版本只提了一些细节上的修改建议,还有一些结构上的,以及整体表达上的修改建议,是通过电话沟通传递的。但我仍可以从这份标注版里学到 Hum 修改文章的一些思路,比如非常注重文章开头,开头的修改幅度往往是最大的;会精简掉一些累赘的描述;会提醒作者扩写不够具体的内容等。3

在电话沟通中,Hum 还提到了少在句末用「了」、调整段落结构等建议。
 

经常写文章的人可能知道,我们自己其实很难发现自己的毛病,尤其是语言表达上的习惯。因为自己写出来的文字,在自己的口中念出来永远都是通顺的。但是只要换个人来念,就很容易发现不通顺的地方。类似的还有错别字的问题,自己往往找不出自己写出来的错别字。

只有通过文档对比的这种方式,我们才能发现自己在语言表达上的问题,并且以此提高自己。

其它的对比方案

BBEdit 的优点主要是免费够用,但如果你有其它需求,比如对比富文本文件,或者有稳定的协同编辑需求,那么还可以尝试下面的这两款工具。

微软自家的 Word

如果你需要在 Windows 上使用,或者需要对比 Word 格式的文档,那么 Word 应用本身其实就内置了对比的功能。苹果生态上的 Pages 文件,也可以通过导出为 Word 格式后再进行对比。

Word 的文档对比功能

去年 iCloud 迁移到国内云上贵州的事件,我们就是使用 Word 对比出了两份用户协议的区别,发现国内版比国际版多出了一段声明。

像这种软件或服务的用户协议、条款、公告,动辄就上百千条,逐条对比显然不现实,使用文档对比工具来发现它们的变动,是更快速的方法。

代码托管服务 GitHub

基于 Git 的代码托管服务 GitHub,其实也可以用来对比文档。

我们只需要把原文档传到 GitHub,然后再把修改版复制,并粘贴覆盖掉原文档的内容,GitHub 就会显示出前后修改的变化。

用 GitHub 对比文档的效果

不过,GitHub 更适合有长期协同编辑需求的人,因为它毕竟需要你创建账号和上传等操作,而且需要依赖网络,不像前面介绍的 BBEdit 和 Word 那么轻量化。比如 Minja 在奏折 05 里,就介绍过我们付费内容组是怎么用 GitHub 进行协同写稿的,有兴趣的读者可以看一下。

结语

我最初了解到 BBEdit,只是慕名下载。因为 Daring Fireball 博客的作者在一篇博文里特意提到说:「所有的博客长文?都是用 BBEdit 写的。Markdown?也是在 BBEdit 上发明的。」

All DF feature-length articles? Written in BBEdit. Markdown? I created it using BBEdit.

很快 BBEdit 就替代了我电脑里的「文本编辑」应用,直接对 txt、md 等格式的文档右键,将默认打开方式改为 BBEdit。

作为一款「真·老牌」应用,BBEdit 将在这个月 13 号迎来它的 27 岁生日。BBEdit 就如同一款宝藏应用一样,慢慢地我又发现了它更多的优点。比如它支持代码高亮,所以就成为了我编辑 HTML、CSS 等文档的默认选择;我又发现它支持正则表达式,所以当我有普通替换文本功能实现不了的需求时,就会用 BBEdit 来实现更精准的匹配;直到前段时间,我才惊喜地发现它有我想要很久的文档对比功能,更是捧为珍宝。

如果你有对比文档、高亮代码、正则表达式匹配这些简单的需求,那么免费的 BBEdit 会是一个不错的选择。

注:因为我自己手边没有更早的文章存档作为例子,所以本文用到截图都是来自于 PhilGu 写的《Drafts for Mac 测评:草稿处理的无缝衔接》,给这篇文章提供修改建议的是 Hum,特此说明。


130

您好,为了保护少数派用户创造的内容、维护良好的社区氛围,我们将从 2019 年 6 月 10 日起实行新的《少数派评论规范》,具体内容您可以通过相关页面了解,感谢您对少数派的理解与支持。(๑•ᴗ•๑)

精选评论 (6)

我的评论

睡着的咖啡豆
git大法好
73
BBedit 能对比 .doc 吗?好像文里没有说清?后面提 word 也只是说 pc 上可以用word
付费内容组
BBEdit 不能对比 .doc,只能对比纯文本。Word 也有 Mac 版呀。
郝海龙
一直用 Kaleidoscope。
互联网小白
Word 无法对比,Windows 习惯用 Notepad++ 的插件 Compare
Minja
一直勉强在用 diff 命令,很眼馋图形界面。

看到 BBEdit,相见恨晚,也帮我省了买 kaleidoscope 的几百大洋 ^ ^

目录

用 BBEdit 来对比文档

对比文章也是学习的过程

其它的对比方案

微软自家的 Word

代码托管服务 GitHub

结语